package com.demo0211;

import java.util.ArrayList;
import java.util.List;

/**
 * Created by cc
 * Description:
 * User: CZH
 * Date: 2023-02-11
 * Time: 18:32
 */
public class Test03 {


    public static void main(String[] args) {
        int[] ints = {1,1,2};
        System.out.println(removeDuplicates(ints));
        for (int data : ints) {
            System.out.print(data);
        }
    }
    public static int removeDuplicates(int[] nums) {
        // 设置两个下标，一个控制新数组长度，一个去找非重复元素
        int guard = 0;
        int seek = 1;
        // 循环到 seek 遇到 nums 数组末尾
        while (seek < nums.length) {
            // seek每移动一步，将该位置上的元素与guard比较
            if (nums[seek] == nums[guard]) {
                // 相同 seek 继续往后移动
                seek++;
            }else {
                // 不同，seek位置上的元素存入guard后面一位，再将guard和seek后移一位
                nums[guard+1] = nums[seek];
                guard++;
                seek++;
            }
        }
        return guard + 1;
    }

    public static int removeDuplicates1(int[] nums) {
        // 创建list
        List<Integer> list = new ArrayList<>();
        list.add(nums[0]);
        // 循环将数组元素和 list 内部的元素比较
        for (int i = 1; i < nums.length; i++) {
            // 不存在就存放进去，存在就跳过该元素。
            if (list.contains(nums[i])) {
                continue;
            }else {
                list.add(nums[i]);
            }
        }
        Object[] objects = list.toArray();
        for (int i=0; i<list.size(); i++) {
            // 将 list 内部的元素传入 nums
            nums[i] = (int)objects[i];
        }
        return list.size();
    }
}
